<script>
    // 实现 resolve 静态方法有三个要点:
    //      传参为一个 Promise, 则直接返回它。
    //      传参为一个 thenable 对象，返回的 Promise 会跟随这个对象，
    //          采用它的最终状态作为自己的状态。
    //      其他情况，直接返回以该值为成功状态的promise对象。

    // 实现Promise中resolve静态方法
    Promise.resolve = (param) => {
        if (param instanceof Promise) return param
        return new Promise((resolve, reject) => {
            if (param && param.then && typeof param.then === "function") {
                // console.log("传递的是一个thenable");
                param.then(resolve, reject)
            } else {
                resolve(param)
            }
        })
    }

    const p1 = new Promise((resolve, reject) => {
        resolve("p1 resolve")
        // reject("p1 reject error")
    })

    // Promise.resolve("码路").then(res => {
    // Promise.resolve(p1).then(res => {
    Promise.resolve({
        then(resolve, reject) {
            resolve("p1 resolve")
        }
    }).then(res => {
        console.log("then结果:", res)
    })

    // 相当于
    // new Promise((resolve) => {
    //   resolve("hello")
    // })
</script>